package Z.dailyExercise.March;

public class _191位1的个数 {
    /**
     * 采用位运算
     * 与 1 结果为1 表示原本是1
     * @param n
     * @return
     */

    public int hammingWeight(int n) {

        int count = 0;

        for (int i = 0; i < 32; i++) {
            count += ((n>>i)&1);

        }

        return count;

    }

    /**
     * 位运算
     *
     * n和n-1相与 运算的次数就是1的个数
     * 其预算结果恰为把 n 的二进制位中的最低位的 1 变为 0
     */

    public int hammingWeight1(int n) {
        int res =0;

        while (n!= 0){
            n &=(n-1);
            res++;
        }
        return res;

    }


}
